package com.sprouting.ops.dao;


import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.sprouting.ops.model.OpsEnv;
import com.sprouting.ops.model.qo.OpsEnvQo;
import com.sprouting.ops.model.vo.OpsEnvVo;
import org.apache.ibatis.annotations.Param;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;

import java.util.List;

/**
 * (OpsEnv)(ops_env) 表数据库访问层
 *
 * @author ：lx（长沙麓谷）
 * @date 创建时间：2025-06-23 10:51:08
 */
public interface OpsEnvDao extends BaseMapper<OpsEnv> {

    /**
     * 分页查询
     * @param page 分页参数
     * @param query 查询参数
     * @return
     */
    Page<OpsEnvVo> getListPage(Page page, @Param("query") OpsEnvQo query);

    /**
     * 查询可复用的环境
     * 过滤条件，
     *      1、已经被使用的环境和部署id关联的不再次查询出来
     *      2、只有当前场所有这个产品有这个环境才查询出来
     *      3、这个产品只有有这个组件依赖才查出来
     *      4、这个产品依赖产品的组件也查询出来，但不再次查询下级依赖
     * @param siteId 场所id
     * @param currentDeployId 当前部署Id
     * @return
     */
    List<OpsEnv> getReuse(@Param("siteId") String siteId, @Param("currentDeployId") String currentDeployId);
}
